home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 3: CDPD 3
/
Almathera Ten on Ten - Disc 3: CDPD3.iso
/
scope
/
001-025
/
scopedisk3
/
68kasm
/
asm
/
history.log
< prev
next >
Wrap
Text File
|
1995-03-18
|
11KB
|
312 lines
A 6 8 K M A I N T E N A N C E H I S T O R Y
Version 1.00 (Charlie Gibbs, June 18, 1987) - initial release
Version 1.01 (Charlie Gibbs, August 20, 1987)
The following bugs in version 1.00 have been corrected:
- Long-word constants and storage areas were being
aligned on a double-word boundary. The only place
where double-word alignment is now forced is at a
break between SECTIONs, since the length of an
AmigaDOS hunk must be a multiple of 4 bytes.
(CNOP 0,4 can still be used if double-word
alignment is desired by the programmer.)
- If a label on an END statement or the first statement
of a SECTION was named in an XDEF statement, it would
not be written to the object code file. The latter
case includes both the label of a SECTION directive
and the label of the first executable instruction in
the absence of any SECTION directives (defaulting to
an unnamed CODE section). In the final case (default
unnamed CODE section), references to XREF symbols
in the first statement would also not be written
to the object code file.
- If the last statement in the source file was not
terminated with a newline character (premature EOF),
it was being ignored altogether.
- A register list as the source operand of a MOVE
instruction was not being flagged as an error.
(MOVE to a register list was being flagged, however.)
- MOVE from USP was generating incorrect code. Also,
MOVE from SR or CCR to an address register was
generating incorrect code rather than being flagged.
Version 1.02 (Charlie Gibbs, September 9, 1987)
The following bugs in version 1.01 have been corrected:
- Duplicate labels were not being flagged.
- XDEF symbols were not being dumped to the
object code file when the -d option was set.
The following enhancements have been added:
- A header file is now supported. If the parameter
-h<filespec> is included on the command line, the
specified file will be included as if the source
file's first line was " include <filespec>".
The file specification may include a path name,
although the include path names given by the
-i parameter (if any) will also be searched.
- An equate file can now be produced. If the parameter
-e<filespec> is included on the command line, a file
will be written containing EQU statements for any
symbol whose value is absolute. If -e is specified
without <filespec>, the name of the file will be
formed in the same way as the list file, except with
an extension of ".equ".
The following changes have been made to existing logic:
- No symbol table dump will be produced unless the
-x (cross-reference) switch is set. Formerly a
symbol table dump was always produced, with only
the cross-reference portion optional.
Version 1.03 (Charlie Gibbs, October 14, 1987)
The following bugs in version 1.02 have been corrected:
- The following situation was causing phase errors:
xdef label
bra label
.
<at least 128 bytes of object code>
.
label:
(The XDEF was fooling A68k into thinking that "label"
was defined within 128 bytes of the BRA instruction
on pass 1, although on pass 2 it knew better.
- If the first operand of an two-operand executable
instruction contained a character term containing a
left or right parenthesis, it would generate error
messages and be incorrectly evaluated.
- Labels that don't begin in column 1 (denoted by a
trailing colon) caused a Guru Meditation.
- Certain ADD and SUB instructions using PC-relative
addressing may cause phase errors. If the displacement
is in the range 1 to 8 inclusive, the instruction was
erroneously converted to ADDQ or SUBQ during pass 2.
The following enhancements have been added:
- The -z option has been added to display the
current source program line on stdout as it
is read, optionally over a given range.
This feature is provided for debugging purposes.
- Bcc, BSR, and DBcc to labels in other than the current
section is now supported. A 16-bit relocation entry
will be generated for each such reference.
- PC relative mode will be generated for backward
references to labels within the current CODE section
if legal for the current instruction. Forward
references will not be converted, since there is
no way of telling which section the label is in
during pass 1.
- The cumulative sizes of all sections by type (i.e.
CODE, DATA, and BSS) will be displayed at the end
of the listing file and the console display.
- In the symbol table dump, section names will no
longer be indicated just as SECTION, but rather
as CODE, DATA, or BSS, depending on type.
Version 1.04 (Charlie Gibbs, October 21, 1987)
The following bugs in version 1.03 have been corrected:
- MOVE was being converted to MOVEQ regardless of
operand size - this conversion is legal only
for longword MOVEs.
- Modifications to version 1.03 caused bad relocatable
entries to be generated.
Version 1.05 (Charlie Gibbs, October 30, 1987)
The following bugs in version 1.04 have been corrected:
- If a section was continued later in the program, e.g.
SECTION prog,CODE
<code>
SECTION variables,BSS
<DS statements>
SECTION prog,CODE
<more code>
bad relocation information was being generated for
the continuation of the SECTION. This bug was left
over from version 1.03.
The following enhancements have been added:
- All console output except for error messages is now
sent to stderr - this enables stdout to be redirected,
producing an error file.
- Console (stderr) output has been modified to require
fewer lines on the screen.
- If an error occurs while expanding a macro or INCLUDE
file, the position of the call in each outer file is
given along with the position in the current (innermost)
file. Tracing continues until the outermost file (i.e.
the original source file) is reached.
Version 1.06 (Charlie Gibbs, March 6, 1988)
The following bugs in version 1.05 have been corrected:
- Lines skipped by IFxx/ENDC were not being counted
in the line number given in error messages.
- DATA and BSS sections may be unnamed, or have names
the same as CODE sections. Honest, I thought section
names had to be unique even across types.
- CHIP and FAST options on the CODE, DATA, and BSS
synonyms for the SECTION directive were not being
handled correctly.
- XDEF records and symbol table records (if desired)
were not being produced for symbols defined ahead
of the first object-code producing instruction.
The following enhancements have been added:
- The CNOP instruction can now force alignment
relative to any boundary up to 128 bytes.
The second operand must still be a power of 2.
- The -q switch has been added to change the frequency
with which progress reports (current line number) are
displayed on the console. The default remains at
every 10 lines (-q10). If you specify -q (no interval)
or -q0 the line number displays will be suppressed.
This will make assemblies run slightly faster due to
reduced console I/O.
- The -t switch has been added to keep any tabs in the
source file when producing the listing file, as well as
generating tabs elsewhere whenever possible. This
speeds up assemblies and gives smaller listing files,
but such listing files cannot be displayed on devices
that do not assume a tab stop in every 8th position.
- Any single-operand instruction with two operands,
and any no-operand instruction with any operands,
will be flagged.
- Relocatable 8- or 16-bit immediate operands
will be flagged. They blow up BLink.
- Named local labels are now supported. Their names
are formed in the same way as normal labels, but are
then preceded by a backslash. Their scope is the
same as normal local labels (nnn$).
- An alignment error will be flagged in the following cases:
Odd displacement on a LINK instruction
Bcc or DBcc to an odd address
In any word or long-word instruction, any operand
using the following addressing modes:
Address register indirect with displacement
Address register indirect with index and displacement
Absolute short
Absolute long
Program counter indirect with displacement
Program counter indirect with index and displacement
LEA and PEA instructions are exempt from these tests.
- If a section is found to contain no data, A68k will
back up to its beginning and overwrite it with the
next section. The result is that null sections
will no longer appear in the object file.
Version 1.07 (Charlie Gibbs, March 11, 1988)
The following bugs in version 1.06 have been corrected:
- Instructions that take no operands (such as RTS)
were being flagged if they had comments that were
not preceded by a semicolon.
The following enhancements have been added:
- The following synonyms have been added:
CSEG for CODE (Aztec compatibility)
DSEG for DATA " "
ENDIF for ENDC (Assempro compatibility)
= for EQU " "
| for ! " "
- Strings and character values may be delimited by
either apostrophes (') or quotation marks (").
The character not used as a delimiter can be used
within the string without doubling it. For example,
DC.B "This is Charlie's assembler"
produces the same code as
DC.B 'This is Charlie''s assembler"
- The object code file will be scratched if any errors
were found, unless the -k (keep) flag is set.
- The symbol .A68K is automatically defined at the
beginning of each assembly as a SET symbol with an
absolute value of 1. This enables programs to check
whether they're being assembled by this assembler.
- The symbol table insertion routine has been
greatly speeded up.
Version 1.10 (Charlie Gibbs, March 20, 1988)
The following bugs in version 1.07 have been corrected:
- BSS sections were not being written to the object
code file except for a BSS section at the end of
a program. This is due to a bug in the code added
in version 1.05 to overwrite null sections.
- If a source module contained a mixture of lengths
(8, 16, or 32 bits) in external references (XREF)
to the same label, all references were being treated
as if they has the length of the first reference.
The following enhancements have been added:
- DS operands that are either a forward references
or relocatable are now flagged.
- Short branches (Bcc.S, including BRA and BSR) to
the next instruction (i.e. a displacement of zero)
are illegal - the processor takes the displacement
from the next word. Attempts to generate a short
displacement of zero are now flagged.